﻿import com.dinmax.flash.draw.control.image.*
import com.dinmax.flash.draw.control.loader.*
import flash.display.*;

/*
*
* 	autor= zero
* 	version= 1.1
*	comments= no se por qué no anda con los BitmapLinkage, ¿alguien me dice?
*	+cambié un poco la estructura de todo. Ahora la función loadImage no es estática
*	+la idea es incorporar esto al modelo de controles, etc.
*
*/

class ImageLoader {
	
	private var loader:MovieClipLoader;
	private var listener:LoaderListener;
		
	function ImageLoader(listener:LoaderListener) {
		this.listener = listener;
		
	}
	
	//CARGA CUALQUIER TIPO DE IMAGEN SOBRE EL CLIP QUE ME PASAN
	public function loadImage(container:MovieClip, path:String):MovieClip{
				
		var nInstancia:Number = 0;
		//me fijo si ya hay un clip interno con ese nombre hasta que encuentro uno libre
		while(container["clip"+nInstancia]){
			nInstancia++;
		}
		var mcLoader:MovieClip=container.createEmptyMovieClip("clip"+nInstancia, container.getNextHighestDepth())
		
		//trace("ImageLoader.as | container= "+container);
		var sExt:String=path.substr(path.length-4);
		var url:Boolean=((path.substr(0,7)).toLowerCase() == "http://");
		sExt=sExt.toLowerCase();
		
		// evaluo si es una URL o una extensión válida de archivo
		if(url || sExt==".jpg" || sExt==".gif" || sExt==".png" || sExt==".swf"){
			this.loader=new MovieClipLoader();
			this.loader.addListener(this.listener);
			this.loader.loadClip(path, mcLoader);
		// si el path es undefined no hago un carajo
		} else if(sExt!=undefined) { 
			//trace("ImageLoader.as | haciendo un attach de= "+path);
			mcLoader.linkImage.removeMovieClip();
			var data:BitmapData = BitmapData.loadBitmap(path);
			if(data instanceof BitmapData){
				
				mcLoader.attachBitmap(data, mcLoader.getNextHighestDepth());
				
			} else {
				mcLoader.attachMovie(path, "linkImage", mcLoader.getNextHighestDepth());
			}
			
		};
		return mcLoader;

	}
	


} //FIN CLASE